#ifndef _D3D_D3DWaterShader_
#define _D3D_D3DWaterShader_

#include <windows.h>
#include <d3dx9.h>

#include "..\..\common\types.h"
#include "..\..\common\arraylist.hpp"
#include "..\interface_types.h"
#include "d3d_shader.h"
#include "..\..\common\string.h"
#include "..\d3d_util.h"
/**************************************
 *Implementation of the shader for the
 *D3D device for water effects
 **************************************/
struct D3DWaterShader : public D3DShader
{
private:
	friend class CD3D9Device; 
	D3DXHANDLE mp_CameraPositionHandle; 

protected:
	D3DWaterShader(CD3D9Device *pDevice); 
	~D3DWaterShader(); 
	
	unsigned int RenderOrder();
	HRESULT InitalizeParameters(LPD3DXEFFECT pEffect);
	HRESULT UpdateParameters(LPD3DXEFFECT pEffect);
public:
	void PreExecute();
	void Execute(const int flags);
	string GetType() const; 
}; 


#endif